//用户信息模块

const db = require('../db')

const select = 'select id, username, nickname, email, user_pic from ev_users where id=?'
const update = 'update ev_users set ? where id=? '
const sleu = 'select * from ev_users where id=? '
const updatePwd = 'update ev_users set password=? where id=? '
const upAvatar = 'update ev_users set user_pic=? where id=?'
//获取用户信息
exports.getUserInfo = (req, res) => {
  db.query(select, req.query.id, (err, results) => {
    if (err) return res.cc('写入sql失败')
    if (results.length <= 0) return res.cc('获取用户信息失败')
    res.send({
      status: 0,
      message: '获取用户基本信息成功！',
      data: results[0]
    })
  })

}


//更新用户信息
exports.upUserInfo = (req, res) => {
  let data = req.body
  db.query(update, [data, data.id], (err, results) => {
    if (err) return res.cc('写入sql失败')
    // 执行 SQL 语句成功，但影响行数不为 1
    if (results.affectedRows !== 1) return res.cc('修改用户基本信息失败！')

    // 修改用户信息成功
    return res.cc('修改用户基本信息成功！', 0)
  })
}


const bcryptjs = require('bcryptjs') //导入密码加密模块

//重置密码 
//  先在路由模块函数先校验了新旧密码规则 然后校验改的id是否存在 然后 将数据库中的旧密码取出转译 和输入的比对 然后 在将新密码加密 写入数据库
exports.updatePassword = (req, res) => {
  // 先查询用户存在不
  db.query(sleu, req.body.id, (err, results) => {
    if (err) return res.cc('写入sql失败')
    if (results.length <= 0) return res.cc('获取用户信息失败')

    // 比对用户输入的密码和数据库中的密码
    const compareResult = bcryptjs.compareSync(req.body.oldPwd, results[0].password)

    // 如果对比的结果等于 false, 则证明用户输入的密码错误
    if (!compareResult) return res.cc('登录失败！')
    // 对新密码进行 bcrypt 加密处理
    const newPwd = bcryptjs.hashSync(req.body.newPwd, 10)
    db.query(updatePwd, [newPwd, req.body.id], (err, results) => {
      if (err) return res.cc('写入sql失败')
      // 执行 SQL 语句成功，但影响行数不为 1
      if (results.affectedRows !== 1) return res.cc('修改用户密码失败！')

      // 修改用户信息成功
      return res.cc('修改用户密码成功！', 0)
    })

  })

}

//更新头像

exports.updateAvatar = (req, res) => {

  db.query(upAvatar, [req.body.avatar, req.body.id], (err, results) => {
    if (err) return res.cc('写入sql失败')
    // 执行 SQL 语句成功，但影响行数不为 1
    if (results.affectedRows !== 1) return res.cc('上传失败！')
    // 更新用户头像成功
    return res.cc('更新头像成功！', 0)
  })

}